package com.litchishell.others;

/**
 * @author LitchiShell
 * @description: 给定一个整数，打印其32位二进制
 * @create 2022-04-10
 */
public class Code01 {

    public static void main(String[] args) {
        int num = 343893;
        print(1);
        print(~1);
        print(-Integer.MIN_VALUE);
        print(Integer.MIN_VALUE);
    }

    /**
     * 打印一个整数的32位二进制
     * 思路：传递数值分别与1左移31~0位后的值做与（&：全1才为1）运算，如果运算结果为0，
     * 则传递的数值31~0为的第i为为0，如果结果为0，则第i位为1
     * @param num
     */
    public static void print(int num) {
        for (int i = 31; i >= 0; i--) {
            System.out.print((num & (1 << i)) == 0 ? "0" : "1");
        }
        System.out.println();
    }
}
